/**
 * @file speed.h
 * @brief 速度处理头文件
 * @details 定义速度相关的宏定义、函数声明和数据结构
 * @author 开发者
 * @date 创建日期
 */

#ifndef __SPEED__H__
#define __SPEED__H__

/* 系统头文件包含 */
#include "gd32f4xx.h"         // GD32F4xx系列MCU标准外设库
#include "FreeRTOS.h"         // FreeRTOS核心头文件
#include "task.h"             // FreeRTOS任务管理头文件
#include "queue.h"            // FreeRTOS队列管理头文件
#include "lvgl.h"             // LVGL图形库头文件
#include "ui.h"               // 用户界面头文件
#include <stdio.h>            // 标准输入输出库
#include <string.h>           // 字符串处理库

/* 速度阈值宏定义 */
#define SPEED_HIGH 30         // 速度阈值（公里/小时）

/* 函数声明 */
/**
 * @brief GPS时间获取函数声明
 * @param HMSBuff 时分秒数据缓冲区
 * @param YMD 年月日数据缓冲区
 * @details 从GPS数据中提取时间信息
 */
void get_gps_time(uint8_t *HMSBuff, uint8_t * YMD);

/**
 * @brief GPS状态显示函数声明
 * @param Stust GPS状态值
 * @details 根据GPS状态变化，通过队列发送状态更新消息
 */
void GPS_Stust_SHOW(int Stust);

/**
 * @brief 获取速度并转换为公里/小时函数声明
 * @param speed GPS原始速度数据（节）
 * @details 将GPS速度从节转换为公里/小时
 */
void get_speed(uint8_t *speed);

/**
 * @brief 获取当前速度并更新UI显示函数声明
 * @param GET_KM_H 速度输出缓冲区
 * @details 格式化速度显示，并根据速度值更新UI提示
 */
void get_speed_H(char * GET_KM_H);

/**
 * @brief 轨迹和航点距离计算函数声明
 * @param SHOW_TRK 总骑行距离输出缓冲区
 * @param SHOW_TRP 单次骑行距离输出缓冲区
 * @details 计算总骑行距离和单次骑行距离，并保存到备份寄存器
 */
void TRK_TRP(char* SHOW_TRK,char * SHOW_TRP);

#endif
